import { get, post, postWithQueryParams } from "@/api/request";

/**
 * 报告菜单控制器 / 报告菜单控制器添加
 * @param {object} data
 * @param {string} [data.name] 菜单名称
 * @param {number} [data.parentId] 父菜单id
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ReportMenu页面展示实体>}
 * @author 肖玮
 */
export function reportMenuAdd(data, config) {
  return post("/reportMenu/add", data, config);
}

/**
 * 报告菜单控制器 / 报告菜单控制器删除
 * @param {object} params
 * @param {object} data
 * @param {number} params.id ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ReportMenu页面展示实体>}
 * @author 肖玮
 */
export function reportMenuDelete(params, data, config) {
  return postWithQueryParams("/reportMenu/delete", params, data, config);
}

/**
 * 报告菜单控制器 / 报告菜单控制器查询详情
 * @param {object} params
 * @param {number} params.id ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ReportMenuDetailVO页面展示实体>}
 * @author 肖玮
 */
export function reportMenuDetail(params, config) {
  return get("/reportMenu/detail", params, config);
}

/**
 * 报告菜单控制器 / 报告菜单控制器列表查询
 * @param {object} params
 * @param {object} data
 * @param {number} params.type 类型(1 施工周报 2 施工月报 3 监理周报 4 监理月报 8 建设用地手续 15 前期手续 16 签证单 17 文件上传)
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<array<ReportMenu页面展示实体>>}
 * @author 肖玮
 */
export function reportMenuList(params, data, config) {
  return postWithQueryParams("/reportMenu/list", params, data, config);
}

/**
 * 报告菜单控制器 / 报告菜单控制器根据项目id查询菜单列表
 * @param {object} params
 * @param {object} data
 * @param {number} params.projectId 项目id
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<array<ReportMenu页面展示实体>>}
 * @author 肖玮
 */
export function reportMenuListByProjectId(params, data, config) {
  return postWithQueryParams("/reportMenu/listByProjectId", params, data, config);
}

/**
 * 报告菜单控制器 / 报告菜单控制器更新
 * @param {object} data
 * @param {number} [data.id] 报告菜单id
 * @param {string} [data.name] 菜单名称
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ReportMenu页面展示实体>}
 * @author 肖玮
 */
export function reportMenuUpdate(data, config) {
  return post("/reportMenu/update", data, config);
}

/**
 * 报告菜单控制器 / 报告菜单控制器修改排序
 * @param {object} data
 * @param {array<number>} data.idList idList
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<array<ReportMenu页面展示实体>>}
 * @author 肖玮
 */
export function reportMenuUpdateSort(data, config) {
  return post("/reportMenu/updateSort", data, config);
}

/**
 * @typedef {object} ReportMenu页面展示实体 报告菜单页面展示实体
 * @property {number} id
 * @property {string} name 菜单名称
 * @property {number} parentId 父菜单id
 * @property {string} projectName 项目名称
 * @property {number} projectPlanningId 项目规划id
 * @property {number} sort 排序
 * @property {number} type 菜单类型
 * @description 报告菜单页面展示实体
 */

/**
 * @typedef {object} ReportMenuDetailVO页面展示实体 报告菜单页面展示实体
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建用户
 * @property {boolean} delFlag 删除标识 (0-未删除, 1-已删除)
 * @property {number} id
 * @property {string} name 菜单名称
 * @property {number} parentId 父菜单id
 * @property {number} projectPlanningId 项目规划id
 * @property {number} sort 排序
 * @property {number} type 菜单类型
 * @property {string} updateTime 更新时间
 * @property {string} updateUser 更新用户
 * @description 报告菜单页面展示实体
 */
